package tools

import (
	"encoding/json"
)

// StructToJSON 结构体转换为JSON字符串
func StructToJSON(obj interface{}) (string, error) {
	jsonData, err := json.Marshal(obj)
	if err != nil {
		return "", err
	}
	return string(jsonData), nil
}

// JSONToStruct JSON字符串转换为结构体
func JSONToStruct(jsonStr string, obj interface{}) error {
	err := json.Unmarshal([]byte(jsonStr), obj)
	if err != nil {
		return err
	}
	return nil
}

// SliceToJSON 切片转换为JSON字符串
func SliceToJSON(slice interface{}) (string, error) {
	jsonData, err := json.Marshal(slice)
	if err != nil {
		return "", err
	}
	return string(jsonData), nil
}

// JSONToSlice JSON字符串转换为切片
func JSONToSlice(jsonStr string, slice interface{}) error {
	err := json.Unmarshal([]byte(jsonStr), slice)
	if err != nil {
		return err
	}
	return nil
}

//func jsonTest() {
//	// 结构体转换为JSON字符串
//	person := struct {
//		Name string `json:"name"`
//		Age  int    `json:"age"`
//	}{
//		Name: "Alice",
//		Age:  25,
//	}
//	jsonStr, err := utils.StructToJSON(person)
//	if err != nil {
//		fmt.Println("StructToJSON error:", err)
//	} else {
//		fmt.Println("StructToJSON:", jsonStr)
//	}
//
//	// JSON字符串转换为结构体
//	var decodedPerson struct {
//		Name string `json:"name"`
//		Age  int    `json:"age"`
//	}
//	err = utils.JSONToStruct(jsonStr, &decodedPerson)
//	if err != nil {
//		fmt.Println("JSONToStruct error:", err)
//	} else {
//		fmt.Println("JSONToStruct:", decodedPerson)
//	}
//
//	// 切片转换为JSON字符串
//	numbers := []int{1, 2, 3, 4, 5}
//	jsonStr, err = utils.SliceToJSON(numbers)
//	if err != nil {
//		fmt.Println("SliceToJSON error:", err)
//	} else {
//		fmt.Println("SliceToJSON:", jsonStr)
//	}
//
//	// JSON字符串转换为切片
//	var decodedNumbers []int
//	err = utils.JSONToSlice(jsonStr, &decodedNumbers)
//	if err != nil {
//		fmt.Println("JSONToSlice error:", err)
//	} else {
//		fmt.Println("JSONToSlice:", decodedNumbers)
//	}
//}
